{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "深度学习在很多机器学习领域均有非常出色的表现，在图像识别、语音识别、自然语言处理、机器人、网络广告投放、医学自动诊断和金融等各大领域有着广泛的应用。面对繁多的应用场景，深度学习框架可以节省大量而繁琐的外围工作，使建模者关注业务场景和模型设计本身。\n",
    "\n",
    "使用深度学习框架完成建模任务有两个显著优势。\n",
    "1. 节省大量编写底层代码的精力：屏蔽底层实现，用户只需关注模型的逻辑结构，降低了深度学习入门门槛。\n",
    "2. 省去了部署和适配环境的烦恼：飞桨框架具备灵活的移植性，可将代码部署到CPU/GPU/移动端上，选择具有分布式性能的深度学习工具会使模型训练更高效，预测端也针对大量的硬件进行了适配和优化工作。\n",
    "\n",
    "百度出品的深度学习框架飞桨（PaddlePaddle）是与国外TensorFlow、Pytorch等框架并列，在主流深度学习框架中唯一完全国产化的产品。国内大量企业的研发人员基于飞桨研发出丰富的行业应用，部分典型案例如下图所示。\n",
    "\n",
    "<center>\n",
    "  \n",
    "![基于飞桨的深度学习模型在众多领域取得成功应用](https://ai-studio-static-online.cdn.bcebos.com/0fad619519c14ce2974587ce81573e90d2e9e5dcf39c47f29a9db76d356c2466)\n",
    "\n",
    "</center>\n",
    "<center> 图1：基于飞桨的深度学习模型在众多领域取得成功应用</center>\n",
    "<br/>\n",
    "\n",
    "框架的本质是由框架实现建模过程中相对通用的模块，将不同模型个性化的部分交予用户实现，在“投入节省精力”和“产出灵活强大”之间达到一个平衡。假设你是深度框架的创造者，你会让框架实现哪些功能呢？\n",
    "\n",
    "相信已经对神经网络模型有所了解的读者，都会得出下表所示的设计思路。在实现建模的过程中，每一步所需要完成的任务均可以拆分成个性化的部分和通用化的部分。个性的往往是指定模型由哪些逻辑元素组合，而通用的部分则是这些元素的算法实现。无论是计算机视觉任务还是自然语言处理任务，使用的深度学习模型结构均是类似的，只是在每个环节指定的实现算法不同。多数情况下，这些实现只是相对有限的一些选择，比如常见的Loss函数不超过十种，常用的网络配置也就十几种，常用优化算法不超过五种等等。这些特性使得基于框架建模更像一个编写“模型配置”的过程。\n",
    " \n",
    " <center>\n",
    "  \n",
    " <img src=\"https://ai-studio-static-online.cdn.bcebos.com/b53a0d4613244278a0e0fef213788dd80fc17ca3a5e046f68d386bfccda9d1ff\" width = \"800\" height = \"600\" alt=\"框架的本质是实现建模过程中通用的模块，让研发人员关注任务中个性的部分\" align=center />\n",
    " \n",
    "</center>\n",
    " \n",
    " <br/>\n",
    " \n",
    "<center> 图2：框架的本质是实现建模过程中通用的模块，让研发人员关注任务中个性的部分 </center>\n",
    "<br/>\n",
    "\n",
    "飞桨（PaddlePaddle）不仅包含深度学习框架，还提供了一整套紧密关联、灵活组合的工具组件和服务平台，助力深度学习技术的应用落地。飞桨框架除了支持用户编写深度学习模型外，还对于自然语言处理、计算机视觉、语音和推荐有大量的预训练模型，可以通过PaddleHub工具直接使用。此外，飞桨基于核心框架提供了支持可视化界面建模的EasyDL和教育培训平台AI studio等，对不同层次的用户提供了多样化的配套服务。\n",
    "\n",
    "<center>\n",
    "\n",
    " <img src=\"https://ai-studio-static-online.cdn.bcebos.com/b37796f5ff2f49b8a454a50fbd909ae0a764c761c6674a42940732cf24f3b164\" width = \"800\" height = \"600\" alt=\"飞桨提供了一套紧密关联、灵活组合的工具组建和服务平台\" align=center />\n",
    "\n",
    "</center>\n",
    "<br/>\n",
    "\n",
    "<center>图3：飞桨提供了一套紧密关联、灵活组合的工具组建和服务平台</center>\n",
    "<br/>\n",
    "\n",
    "与其它框架和平台相比，使用飞桨有五个方面的优势。\n",
    "1. 支持两种业界流行的编程方案：更容易调试的动态图和训练速度更快的静态图。\n",
    "2. 大量的官方模型库：多数任务可以在官方模型的基础上少许修改，即可上线应用。\n",
    "3. 大规模分布式训练：基于百度每日上亿用户使用的应用场景打磨，天然具备大规模工业实践能力。\n",
    "4. 端到端部署：速度全面领先的推理引擎，适配多种类硬件芯片，尤其是国产芯片。\n",
    "5. 唯一提供系统化深度学习技术服务的平台：为用户和企业提供7\\*24小时服务，高效解决各种使用难题。\n",
    "\n",
    "以其中的模型库为例，大量工业实践任务并不是从头编写，而是在相对标准化的模型上进行微调和优化。飞桨框架已经提供了主流深度学习任务的模型实现（如下图），并且在多数模型的效果上达到业界领先。如下表所示，飞桨的自然语言处理模型库ERNIE在自然语言推断、语义匹配、命名实体识别、情感分析和检索式问答等任务上全面领先竞品。\n",
    "\n",
    "\n",
    "<center>\n",
    "\n",
    "<img src=\"https://ai-studio-static-online.cdn.bcebos.com/680fc07da87d4e3bbb1beaeea9fb02cdbf7c7e2e6868407385274a4e1724dbac\" width = \"600\" height = \"400\" alt=\"飞桨在自然语言处理、计算机视觉和推荐领域的模型库\" align=center />\n",
    "  \n",
    "</center>\n",
    "\n",
    "<center>图4：飞桨在自然语言处理、计算机视觉和推荐领域的模型库</center>\n",
    "\n",
    "<br/>\n",
    "<br/>\n",
    "\n",
    "<center>表1：飞桨的自然语言处理模型库ERNIE在各任务上与竞品BERT的比较 </center>\n",
    "\n",
    "<center>\n",
    "  \n",
    "| 任务名称 | 自然语言推断 | 语义匹配 | 命名实体识别 | 情感分析 | 检索式问答 |\n",
    "|------| ------ | ------ |------| ------ | ------|\n",
    "| 数据集  | XNLI | LCQMC | MASK-NER | ChnSentiCorp | NLPCC-DBQA |\n",
    "| 评估指标 | 准确率 | 准确率 | F1 | 准确率 | MRR & F1 |\n",
    "| BERT | 77.20% | 87.00% | 92.60% | 94.30% | 94.60% & 80.80% |\n",
    "| ERNIE |\t78.4% |\t87.4% |\t93.8% |\t94.3% |\t95.1% &\t82.7%|\n",
    "\n",
    "  </center>\n",
    "\n",
    "\n",
    "随着深度学习技术在更行业的应用落地，多种多样的应用场景存在多种多样的硬件设备。训练好的模型需要能够嵌入到各类型的硬件芯片中，大到在机房中存放的服务器，小到摄像头中芯片。在中美贸易战时隐时现的情况下，训练框架对国产芯片的支持尤其重要。国产化的飞桨框架走在这方面的前列，提供了专门的预测端部署工具 Paddle lite。下图是Paddle lite适配的一些硬件芯片，以及经由Paddle lite转换的模型与其它主流框架在性能上的优势。\n",
    "\n",
    "<center>\n",
    "\n",
    "<img src=\"https://ai-studio-static-online.cdn.bcebos.com/f68eda5a41454f48a328982fd7d8d8b66b21b6bddfe7497da892b39c2f95bbcf\" width = \"800\" height = \"600\" alt=\"飞桨在自然语言处理、计算机视觉和推荐领域的模型库\" align=center />\n",
    "\n",
    "</center>\n",
    "\n",
    "<center>图5：飞桨对众多类型计算资源的支持，并在运算性能上找过其他的主流框架</center>\n",
    "<br/>\n",
    "\n",
    "既然飞桨如此强大，我们没必要从头到尾编写深度学习模型的完整实现，基于飞桨可以更高效的完成建模。在进入实践之前，首先需要在服务器或个人电脑上安装飞桨。在飞桨官网上访问快速安装说明的页面（[https://www.paddlepaddle.org.cn/install/quick](https://www.paddlepaddle.org.cn/install/quick)）。\n",
    "\n",
    "整个页面分为两个部分，上部分是用户选择其安装环境的配置，比如笔者选择在笔记本电脑上安装飞桨，那么点选（windows系统+pip+Python3+CPU版本）的配置组合。其中,windows系统和CPU版本是个人笔记本电脑的软硬件配置，Python3是需要事先安装好的Python版本（Python有2和3两个主流版本，两者的API接口不兼容），pip是命令行安装的指令。\n",
    "\n",
    "<center>\n",
    "<img src=\"https://ai-studio-static-online.cdn.bcebos.com/aa18c99dc7e843308b736b8c0169f64fc9095fec429348019813c66a646b6541\" width = \"1200\" height = \"1000\" alt=\"飞桨的安装方法，环境配置的选择\" align=center />\n",
    "\n",
    "\n",
    "</center>\n",
    "\n",
    "<center> 图6：飞桨的安装方法，环境配置的选择 </center>\n",
    "<br/>\n",
    "\n",
    "在点选好安装的配置条件后，页面的下方会出现该配置下的安装方式和步骤。按照该说明一步步执行即可安装成功。\n",
    "\n",
    "<center>\n",
    "  \n",
    "![飞桨的安装方法，执行命令的步骤](https://ai-studio-static-online.cdn.bcebos.com/8a5f94caad1e42d2979db09485758059740d0d95548644a89a8150ed08b20236)\n",
    "\n",
    "</center>\n",
    "\n",
    "<center>图7：飞桨的安装方法，执行命令的步骤</center>\n",
    "<br/>\n",
    "\n",
    "\n",
    "飞桨框架更多的参考信息\n",
    "- 官方网站 [https://paddlepaddle.org](https://paddlepaddle.org)\n",
    "- GitHub [https://github.com/paddlepaddle](https://github.com/paddlepaddle)\n",
    "- 微信公众号 飞桨PaddlePaddle\n",
    "- 官方QQ群 432676488\n",
    "\n",
    "在飞桨框架的加持下，研发深度学习模型事半功倍。如果大家仍有疑虑，下面我们就使用飞桨重写“房价预测”的案例。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "PaddlePaddle 1.6.0 (Python 3.5)",
   "language": "python",
   "name": "py35-paddle1.2.0"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
